Method and apparatus for audio normalization

ABSTRACT

A request is received to play an audio file. A determination is made regarding whether volume normalization parameters associated with the audio file are stored in a media library. If the volume normalization parameters associated with the audio file are stored in the media library, the volume normalization parameters are retrieved from the media library. If the volume normalization parameters associated with the audio file are not stored in the media library, retrieving the volume normalization parameters from the audio file. The volume normalization parameters are applied while playing the audio file. The volume normalization process can be applied across multiple audio files during playback.

RELATED APPLICATIONS

This application is a continuation of U.S. patent application Ser. No.12/551,357, filed Aug. 31, 2009, entitled “Method and Apparatus forAudio Normalization”, which is hereby incorporated by reference hereinin its entirety. U.S. patent application Ser. No. 12/551,357 is acontinuation of U.S. patent application Ser. No. 10/658,349, filed Sep.9, 2003, entitled “Method and Apparatus for Playback of Audio Files”,now U.S. Pat. No. 7,596,234, which is hereby incorporated by referenceherein in its entirety. U.S. patent application Ser. No. 10/658,349 is acontinuation in part of U.S. patent application Ser. No. 10/606,464,filed Jun. 26, 2003, entitled “Method and Apparatus for AudioNormalization”, now U.S. Pat. No. 7,272,235, which is herebyincorporated by reference herein in its entirety.

BACKGROUND

Computer systems are being used today to store various types of media,such as audio data, video data, combined audio and video data, andstreaming media from online sources. Media clips recorded from orobtained from different sources often have widely varying volume levels.For example, an audio file copied from a Compact Disc (CD) may have aparticular volume level and an audio file downloaded from an onlinemusic source may have a significantly different volume level. If thedifference in volume levels between two audio files is significant, auser will notice the difference in volume when the two audio files areplayed sequentially.

A user can play audio data through a computer system using, for example,a media player application. If the volume between different songs ormedia clips is significant, the user can manually adjust the volume foreach song or media clip such that the volume is at the desired level.This approach is annoying to the user of the computer and distracts theuser from their other activities.

Accordingly, it is desirable to provide an audio playback mechanism thatautomatically adjusts the volume of different sets of audio data (e.g.,media clips) such that the playback volume is substantially constantacross a list of different audio data.

SUMMARY

The systems and methods described herein normalize volume levels acrossmultiple audio files. In a particular embodiment, a request is receivedto play an audio file. A process determines whether volume normalizationparameters associated with the audio file are stored in a media library.If so, the volume normalization parameters are retrieved from the medialibrary. If the volume normalization parameters associated with theaudio file are not stored in the media library, the volume normalizationparameters are retrieved from the audio file. The volume normalizationparameters are applied while playing the audio file.

BRIEF DESCRIPTION OF THE DRAWINGS

Similar reference numbers are used throughout the figures to referencelike components and/or features.

FIG. 1 is a block diagram illustrating an example of various componentsthat can be used to normalize volume levels among multiple media filesor other media data.

FIG. 2 is a flow diagram illustrating an embodiment of a procedure forplaying an audio file.

FIG. 3 is a flow diagram illustrating an embodiment of a procedure forcopying a CD.

FIG. 4 is a flow diagram illustrating an embodiment of a procedure forscanning media on a computer system.

FIG. 5 is a flow diagram illustrating an embodiment of a procedure fornormalizing volume levels for an audio file during playback.

FIG. 6 is a graph illustrating the manner in which audio data ismodified to avoid “clipping” the audio output signal.

FIG. 7 illustrates a general computer environment, which can be used toimplement the techniques described herein.

DETAILED DESCRIPTION

The systems and methods discussed herein normalize audio data duringplayback. Normalization is also referred to as “volume leveling”.Normalization of audio data adjusts the average volume of audio datasuch that the playback volume is substantially constant across multipleaudio files. The systems and methods described herein can be appliedduring, for example, media playback, media recording (e.g., “burning” aCD or DVD) and media scanning or analysis. This normalization of audiodata eliminates the need for the user to manually adjust the volume fordifferent media clips or other audio files.

In a specific embodiment, a volume normalization process is appliedacross multiple audio files during playback. As discussed herein, volumenormalization parameters can be calculated at different times, such asduring playback of an audio file, when copying an audio file, whenscanning a media library, or during media recording.

As used herein, the term “media clip” describes any sequence of audiodata, video data, combined audio and video data, etc. A “media clip” mayalso be referred to as an “audio clip”, a “video clip”, or a “song”. Asused herein, the term “audio file” describes any sequence of audio datahaving any length. An “audio file” may contain other information inaddition to audio data, such as configuration information, associatedvideo data, and the like. An “audio file” may also be referred to as a“media file”.

Although particular examples discussed herein refer to playing orcopying audio data from CDs, the systems and methods described hereincan be applied to any audio data obtained from any source, such as CDs,DVDs (digital video disks or digital versatile disks), video tapes,audio tapes and various online sources. The audio data processed by thesystems and methods discussed herein may be stored in any format, suchas a raw audio data format or a compressed format such as WMA (WindowsMedia Audio), MP3 (MPEG, audio layer 3), WAV (a format for storing soundin files; uses “.wav” filename extension), WMV (Windows Media Video), orASF (Advanced Streaming Format).

FIG. 1 is a block diagram illustrating an example of various componentsthat can be used to normalize volume levels (also referred to as audiolevels) among multiple media files or other media data. The variouscomponents shown in FIG. 1 may be included in a media player applicationsuch as the Windows Media® Player available from Microsoft Corporationof Redmond, Wash. A volume normalization engine 102 is coupled to amedia copy module 104, a media playback module 106, a media scan module108, a media burning module 110 and a media download module 112. Volumenormalization engine 102 normalizes volume levels among multiple mediafiles, media clips, etc. Media copy module 104 allows a user to copy anaudio file from, for example, a CD to a computer hard drive (or otherstorage device) such that the audio file can be played back through thecomputer's speakers. This process of copying an audio file from a CD toa computer hard drive is commonly referred to as “ripping”. Media copymodule 104 may also allow a user to copy an audio file from a computerhard drive to a portable device, such as a WMA or MP3 player.

Media playback module 106 plays audio and/or video data from a CD, DVD,computer hard drive, or other source. Typically, media player module 106plays audio data through a computer's speakers and plays video data onthe computer's monitor. Media scan module 108 scans storage devicescoupled to a computer system for audio and/or video files andcategorizes those audio and/or video files. Media scan module 108 istypically executed when a media player is installed on a new computer orwhen a user wants to update a listing of all audio and/or video files onthe computer. Media scan module 108 generally scans hard drives, CD-ROMdrives, DVD drives, other drives containing removable media, and anyportable devices coupled to the computer.

Media burning module 110 controls the recording of data (such as audioand video data) on a recordable media, such as a recordable CD or arecordable DVD. The process of recording a CD or a DVD is commonlyreferred to as “burning” a CD or DVD. Media burning module 110 mayrecord data from multiple sources onto a single CD or DVD. For example,a collection of audio data stored on a CD may be from another CD, anonline source, and from an audio track on a DVD.

Media download module 112 allows users to download media content fromvarious sources, such as web sites, music download services, or datastorage mechanisms accessible via, for example, a data communicationnetwork. As media content is downloaded by media download module 112,various volume normalization parameters are computed and saved.

Volume normalization engine 102 is also coupled to a media library 114,which stores normalization parameters associated with multiple audiofiles. Additional details regarding these normalization parameters arediscussed below. Media library 114 may also contain configurationinformation, audio data, video data, and other data used by volumenormalization engine 102 and the media player application.

Volume normalization engine 102 includes a volume normalizationparameter calculator 116 and a volume normalizer 118. Volumenormalization parameter calculator 116 analyzes audio data andcalculates one or more volume normalization parameters that are appliedto the audio data during playback such that the volume of the audio datais normalized with the volume of other audio data. These volumenormalization parameters are stored in media library 114 along with anidentifier of the audio data with which the parameters are associated.The volume normalization parameters are applied by volume normalizer 118during playback of the audio data to normalize the playback volume ofthe audio data. Volume normalizer 118 may work in combination with mediaplayback module 106 to play audio data with a normalized playbackvolume.

FIG. 2 is a flow diagram illustrating an embodiment of a procedure 200for playing an audio file. Initially, a user selects an audio file forplayback (block 202). The procedure 200 then determines whether existingvolume normalization parameters are available for the audio file (block204). This determination is made by first checking the media library(e.g., media library 114 in FIG. 1) for volume normalization parametersassociated with the selected audio file. If the media library does notcontain volume normalization parameters associated with the selectedaudio file, the audio file itself is checked for volume normalizationparameters. In some situations, the volume normalization parameters arestored in the audio file when the audio file is created or added to theaudio file at a later time. As discussed in greater detail below,example volume normalization parameters include peak volume value andaverage volume level.

If volume normalization parameters are located in the media library orin the audio file itself, the procedure continues from block 204 toblock 206, where the procedure retrieves the volume normalizationparameters associated with the selected audio file. The volumenormalization parameters are then applied while playing the selectedaudio file (block 208).

If volume normalization parameters are not located in the media libraryor in the audio file itself, the procedure branches from block 204 toblock 210, where the procedure plays the selected audio file. Whileplaying the selected audio file, the procedure monitors the audio fileand calculates volume normalization parameters (block 212). Whenplayback of the audio file is complete, the volume normalizationparameters are stored in a media library (block 214) and stored with theaudio file (block 216). Storing the volume normalization parameters“with the audio file” includes editing the audio file to include theparameters or storing the parameters in another file adjacent to orassociated with the audio file. In one embodiment, the volumenormalization parameters are stored in a header of the audio file. Incertain situations, the audio file cannot be edited and the parameterscannot be stored with the audio file. In these situations, the volumenormalization engine relies on the volume normalization parametersstored in the media library during playback of the audio file.

FIG. 3 is a flow diagram illustrating an embodiment of a procedure 300for copying a CD. Initially, a user selects a CD (or other storagemedia) to copy (block 302). Audio files on the selected CD are copied tothe user's computer system (block 304), such as the computer system'shard disk drive. The procedure then analyzes each audio file andcalculates one or more volume normalization parameters for each audiofile (block 306). The volume normalization parameters are then saved ina media library (block 308) and saved with the associated audio file(block 310), if possible. The volume normalization parameters may besaved in the audio file itself, saved adjacent to the audio file, orsaved in the proximity of the audio file.

Although blocks 304 and 306 in FIG. 3 are shown as two separatefunctions or operations, in a particular embodiment during the processof copying audio files from a CD, the audio data passes through anormalization procedure before they are encoded and written to the diskdrive. The normalization engine calculates the normalization parametersas the audio files are transferred from the CD to the disk drive.

In the example of FIG. 3 above, all audio files on the CD are copied tothe computer system. In alternate embodiments, a user may select one ormore of the audio files on the CD to copy to the computer system. Forexample, the user may select their favorite songs from the CD to becopied to the computer system.

In an alternate embodiment of FIG. 3, the procedure first checks to seewhether volume normalization parameters already exist for each audiofile. If the parameters do not exist in the media library or with theaudio file, then the procedure is followed as discussed above. However,if the volume normalization parameters exist in the media library orwith the audio file, the procedure does not recreate the parameters.Instead, the procedure uses the existing volume normalizationparameters.

FIG. 4 is a flow diagram illustrating an embodiment of a procedure 400for scanning media on a computer system. Initially, a user initiates amedia scan operation on a computer system (block 402). The media scanoperation identifies multiple media files on the computer system (block404). The identified media files may include audio files, video files,and the like. A volume normalization engine analyzes the content of eachidentified media file (block 406). The volume normalization enginecalculates volume normalization parameters for each identified mediafile that contains audio data (block 408). The volume normalizationengine stores the volume normalization parameters in a media library(block 410) and stores the volume normalization parameters with theassociated media file (block 412). The volume normalization parametersmay be stored in the media file itself, stored adjacent to the mediafile, or stored in the proximity of the media file.

In another embodiment, the volume normalization engine stores the volumenormalization parameters in the media library, as mentioned above withrespect to block 410. However, instead of storing the volumenormalization parameters with the associated media file (e.g., block412), the volume normalization parameters are copied from the medialibrary to the associated media file (if the media file is an editablefile) at a later time.

In one embodiment, a media scan operation identifies media files on thecomputer system that were not identified during a previous media scan.This embodiment saves the computer system from re-analyzing media filesand re-calculating volume normalization parameters unnecessarily.

In another embodiment, a media scan operation is performed periodicallyto identify any new media files in the computer system. These periodicmedia scans keep the media library and the media listings provided bythe media player application current.

In a particular embodiment, a user may create (e.g., “burn”) an audio CDwith one or more audio tracks. The volume normalization system attemptsto retrieve volume normalization parameters from the media library andfrom the audio files to be recorded on the CD. If the volumenormalization parameters are not available for a particular audio file,the volume normalization system scans the audio file and calculates thevolume normalization parameters. The volume normalization system thenscans the audio file a second time to copy the audio file to the CDwhile applying the volume normalization parameters calculated during thefirst scan of the audio file. The resulting audio CD contains one ormore audio files that have been normalized across the audio CD.

In another embodiment, a user may download one or more audio files froman online source, such as an online music download service. As the audiofiles are downloaded, the volume normalization system attempts toretrieve volume normalization parameters from the media library and fromthe audio files being downloaded. If the volume normalization parametersare not available for a particular audio file, the volume normalizationsystem scans the audio file and calculates the volume normalizationparameters as the file is downloaded. The volume normalization systemthen saves the volume normalization parameters in the media libraryand/or in the downloaded audio file.

FIG. 5 is a flow diagram illustrating an embodiment of a procedure 500for normalizing volume levels for an audio file during playback.Initially, a user selects an audio file for playback (block 502). Avolume normalization engine identifies a mapping function associatedwith the audio file (block 504). The mapping function can be stored in amedia library, stored in the audio file, or stored with the audio file.The mapping function maps an input sample to an output sample in asmooth and continuous manner. During playback of the audio file, thevolume normalization engine applies a first portion of the mappingfunction to audio data in the audio file when the amplitude of the audiodata does not exceed a threshold value (block 506). Similarly, duringplayback of the audio file, the volume normalization engine applies asecond portion of the mapping function to audio data in the audio filewhen the amplitude of the audio data exceeds the threshold value (block508). Calculation and application of the mapping function are discussedin greater detail below. In a particular embodiment, the same mappingfunction is used throughout an entire song or audio file.

The systems and methods discussed herein calculate volume normalizationparameters at various times, such as during CD ripping, media scans, andthe first time a particular media file is played by the computer system.The normalization parameters are applied in real-time during playback ofthe audio data. In many cases, the normalization parameters are storedin or stored with the associated audio file. Therefore, if the audiofile is copied to a new computer system, the normalization parametersare readily available to the new computer system without requiring anyadditional analysis or calculations. However, certain audio files areread-only and/or are stored on a read-only media (such as a CD-ROMdisc). In this situation, the normalization parameters associated withthe audio files are available from the media library.

In one embodiment, a volume normalization algorithm uses two primaryparameters: peak volume value and average volume level for a particularaudio file. These values can be calculated from the PCM (Pulse CodeModulation) samples in the audio stream. PCM is a sampling technique fordigitizing analog signals. In a particular embodiment, the averagevolume level is the rms (root mean square) value of the samples. Rootmean square is a method of defining the voltage or current associatedwith an alternating waveform.

The range of audio volumes that can be reproduced is limited. If thevolume level exceeds a maximum point, the actual volume will remain atthat maximum point, thereby “clipping” the audio signal. “Clipping” ofthe audio signal may also be referred to as “clamping” the audio signal.The peak volume parameter is used to ensure that data samples (afterscaling) do not have amplitudes that go beyond the valid data range fora particular sample bit depth. If an overflow occurs, a smoothly curvedmapping function is applied to the samples. The effect of this mapping(which is also referred to as limiting) is to compress the dynamic rangeof the samples such that overflow no longer occurs, thereby avoiding“clipping”.

Certain types of music, such as classical music, can have a low averagevolume, but a high peak volume. In this situation, raising the rms valueto the desired level may also require excessive compression near thepeak volume, which results in noticeable distortion in the resultingnormalized music. To avoid this distortion when the peak-to-rms ratio istoo high, the normalization algorithm also uses the peak value todetermine the mapping function.

FIG. 6 is a graph illustrating the manner in which audio data ismodified to avoid “clipping” the audio output signal. FIG. 6 illustratesa mapping curve 602 associated with a mapping function. The mappingfunction has a first portion (the bottom portion) that is substantiallylinear and is equivalent to linear scaling. This first portion isapplied to the majority of the samples that have relatively lowmagnitudes (e.g., volumes). The second portion of the mapping function(the upper portion) is a quadratic function that gradually compressesthe upper part of the dynamic range. As compared to abrupt clipping,smoothing of the samples reduces distortion in the resulting audiosignal.

As shown in FIG. 6, broken line 604 shows how the linear approach wouldcontinue until a threshold value is reached (the value “1” on thevertical axis), at which point clipping would occur. A variable x₀ onthe horizontal axis identifies the point at which the mapping functionchanges from the first portion to the second portion.

The mapping function can be implemented efficiently. Typically, themajority of the samples require linear scaling, which needs one floatingpoint multiplication. For the samples near the peak value, the quadraticfunction requires three floating point multiplications. The followingnormalization algorithm assumes that the sample values are expressed asfloating point values in the range of [−1, 1]. In one embodiment, thenormalization algorithm is defined as follows:

y=s*x (when 0≦x≦x₀)

y=s*x−c*(x−x₀)² (when x₀≦x≦p)

where:

-   -   x=original value of a sample    -   y=value of the normalized sample    -   p=source peak value, computed from the samples    -   rms=source rms value, computed from the samples    -   R=desired target rms level, a pre-determined constant (e.g.,        0.15)    -   T=threshold for scaled peak value, a pre-determined constant        (e.g., 1.50)    -   s=min [R/rms, T/p]    -   x₀=(2−s*p)/s    -   c=s²/(4*(s*p−1))

In a particular implementation of this normalization algorithm, themaximum compression is approximately 0.667 (or −3.5 dB), which isrelatively insignificant. This maximum occurs when the source peak valueis 10 times (20 dB) over the source average value. For popular music,the peak value is typically 6-12 dB above the average value. Certainclassical and jazz recordings may have peak values over 20 dB above theaverage value. In these situations, the target volume level is loweredand the amount of compression is capped at −3.5 dB.

FIG. 7 illustrates a general computer environment 700, which can be usedto implement the techniques described herein. The computer environment700 is only one example of a computing environment and is not intendedto suggest any limitation as to the scope of use or functionality of thecomputer and network architectures. Neither should the computerenvironment 700 be interpreted as having any dependency or requirementrelating to any one or combination of components illustrated in theexample computer environment 700.

Computer environment 700 includes a general-purpose computing device inthe form of a computer 702. One or more media player applications can beexecuted by computer 702. The components of computer 702 can include,but are not limited to, one or more processors or processing units 704(optionally including a cryptographic processor or co-processor), asystem memory 706, and a system bus 708 that couples various systemcomponents including the processor 704 to the system memory 706.

The system bus 708 represents one or more of any of several types of busstructures, including a memory bus or memory controller, a peripheralbus, an accelerated graphics port, and a processor or local bus usingany of a variety of bus architectures. By way of example, sucharchitectures can include an Industry Standard Architecture (ISA) bus, aMicro Channel Architecture (MCA) bus, an Enhanced ISA (EISA) bus, aVideo Electronics Standards Association (VESA) local bus, and aPeripheral Component Interconnects (PCI) bus also known as a Mezzaninebus.

Computer 702 typically includes a variety of computer readable media.Such media can be any available media that is accessible by computer 702and includes both volatile and non-volatile media, removable andnon-removable media.

The system memory 706 includes computer readable media in the form ofvolatile memory, such as random access memory (RAM) 710, and/ornon-volatile memory, such as read only memory (ROM) 712. A basicinput/output system (BIOS) 714, containing the basic routines that helpto transfer information between elements within computer 702, such asduring start-up, is stored in ROM 712. RAM 710 typically contains dataand/or program modules that are immediately accessible to and/orpresently operated on by the processing unit 704.

Computer 702 may also include other removable/non-removable,volatile/non-volatile computer storage media. By way of example, FIG. 7illustrates a hard disk drive 716 for reading from and writing to anon-removable, non-volatile magnetic media (not shown), a magnetic diskdrive 718 for reading from and writing to a removable, non-volatilemagnetic disk 720 (e.g., a “floppy disk”), and an optical disk drive 722for reading from and/or writing to a removable, non-volatile opticaldisk 724 such as a CD-ROM, DVD-ROM, or other optical media. The harddisk drive 716, magnetic disk drive 718, and optical disk drive 722 areeach connected to the system bus 708 by one or more data mediainterfaces 726. Alternatively, the hard disk drive 716, magnetic diskdrive 718, and optical disk drive 722 can be connected to the system bus708 by one or more interfaces (not shown).

The disk drives and their associated computer-readable media providenon-volatile storage of computer readable instructions, data structures,program modules, and other data for computer 702. Although the exampleillustrates a hard disk 716, a removable magnetic disk 720, and aremovable optical disk 724, it is to be appreciated that other types ofcomputer readable media which can store data that is accessible by acomputer, such as magnetic cassettes or other magnetic storage devices,flash memory cards, CD-ROM, digital versatile disks (DVD) or otheroptical storage, random access memories (RAM), read only memories (ROM),electrically erasable programmable read-only memory (EEPROM), and thelike, can also be utilized to implement the example computing system andenvironment.

Any number of program modules can be stored on the hard disk 716,magnetic disk 720, optical disk 724, ROM 712, and/or RAM 710, includingby way of example, an operating system 726, one or more applicationprograms 728, other program modules 730, and program data 732. Each ofsuch operating system 726, one or more application programs 728, otherprogram modules 730, and program data 732 (or some combination thereof)may implement all or part of the resident components that support thedistributed file system.

A user can enter commands and information into computer 702 via inputdevices such as a keyboard 734 and a pointing device 736 (e.g., a“mouse”). Other input devices 738 (not shown specifically) may include amicrophone, joystick, game pad, satellite dish, serial port, scanner,and/or the like. These and other input devices are connected to theprocessing unit 704 via input/output interfaces 740 that are coupled tothe system bus 708, but may be connected by other interface and busstructures, such as a parallel port, game port, or a universal serialbus (USB).

A monitor 742 or other type of display device can also be connected tothe system bus 708 via an interface, such as a video adapter 744. Inaddition to the monitor 742, other output peripheral devices can includecomponents such as speakers (not shown) and a printer 746 which can beconnected to computer 702 via the input/output interfaces 740.

Computer 702 can operate in a networked environment using logicalconnections to one or more remote computers, such as a remote computingdevice 748. By way of example, the remote computing device 748 can be apersonal computer, portable computer, a server, a router, a networkcomputer, a peer device or other common network node, game console, andthe like. The remote computing device 748 is illustrated as a portablecomputer that can include many or all of the elements and featuresdescribed herein relative to computer 702.

Logical connections between computer 702 and the remote computer 748 aredepicted as a local area network (LAN) 750 and a general wide areanetwork (WAN) 752. Such networking environments are commonplace inoffices, enterprise-wide computer networks, intranets, and the Internet.

When implemented in a LAN networking environment, the computer 702 isconnected to a local network 750 via a network interface or adapter 754.When implemented in a WAN networking environment, the computer 702typically includes a modem 756 or other means for establishingcommunications over the wide network 752. The modem 756, which can beinternal or external to computer 702, can be connected to the system bus708 via the input/output interfaces 740 or other appropriate mechanisms.It is to be appreciated that the illustrated network connections areexemplary and that other means of establishing communication link(s)between the computers 702 and 748 can be employed.

In a networked environment, such as that illustrated with computingenvironment 700, program modules depicted relative to the computer 702,or portions thereof, may be stored in a remote memory storage device. Byway of example, remote application programs 758 reside on a memorydevice of remote computer 748. For purposes of illustration, applicationprograms and other executable program components such as the operatingsystem are illustrated herein as discrete blocks, although it isrecognized that such programs and components reside at various times indifferent storage components of the computing device 702, and areexecuted by the data processor(s) of the computer.

Various modules and techniques may be described herein in the generalcontext of computer-executable instructions, such as program modules,executed by one or more computers or other devices. Generally, programmodules include routines, programs, objects, components, datastructures, etc. that perform particular tasks or implement particularabstract data types. Typically, the functionality of the program modulesmay be combined or distributed as desired in various embodiments.

An implementation of these modules and techniques may be stored on ortransmitted across some form of computer readable media. Computerreadable media can be any available media that can be accessed by acomputer. By way of example, and not limitation, computer readable mediamay comprise “computer storage media” and “communications media.”

“Computer storage media” includes volatile and non-volatile, removableand non-removable media implemented in any method or technology forstorage of information such as computer readable instructions, datastructures, program modules, or other data. Computer storage mediaincludes, but is not limited to, RAM, ROM, EEPROM, flash memory or othermemory technology, CD-ROM, digital versatile disks (DVD) or otheroptical storage, magnetic cassettes, magnetic tape, magnetic diskstorage or other magnetic storage devices, or any other medium which canbe used to store the desired information and which can be accessed by acomputer.

“Communication media” typically embodies computer readable instructions,data structures, program modules, or other data in a modulated datasignal, such as carrier wave or other transport mechanism. Communicationmedia also includes any information delivery media. The term “modulateddata signal” means a signal that has one or more of its characteristicsset or changed in such a manner as to encode information in the signal.By way of example, and not limitation, communication media includeswired media such as a wired network or direct-wired connection, andwireless media such as acoustic, RF, infrared, and other wireless media.Combinations of any of the above are also included within the scope ofcomputer readable media.

Although the description above uses language that is specific tostructural features and/or methodological acts, it is to be understoodthat the invention defined in the appended claims is not limited to thespecific features or acts described. Rather, the specific features andacts are disclosed as exemplary forms of implementing the invention.

1. An apparatus comprising: a volume normalization parameter calculatorto analyze an audio file and calculate at least one volume normalizationparameter; a media library coupled to the volume normalization parametercalculator, the media library to store volume normalization parametersassociated with audio files; and a volume normalizer coupled to themedia library, the volume normalizer to apply volume normalizationparameters to normalize playback volumes of audio files.
 2. An apparatusas recited in claim 1, wherein the volume normalization parametercalculator calculates a mapping function.
 3. An apparatus as recited inclaim 2, wherein a first portion of the mapping function is applied toaudio data in the audio file when the amplitude of the audio dataexceeds a threshold value, and a second portion of the mapping functionis applied to audio data in the audio file when the amplitude of theaudio data does not exceed the threshold value.
 4. An apparatus asrecited in claim 1, wherein the volume normalizer is to retrieve volumenormalization parameters from an associated audio file.
 5. An apparatusas recited in claim 1, wherein the volume normalizer is to retrievevolume normalization parameters from the media library.
 6. An apparatusas recited in claim 1, wherein the volume normalization parametercalculator is to analyze the audio file and calculate the at least onevolume normalization parameter in response to a request to copy theaudio file.
 7. An apparatus as recited in claim 6, wherein the volumenormalization parameter calculator is to calculate the at least onevolume normalization parameter based on volume levels in the audio file.8. An apparatus as recited in claim 6, wherein the volume normalizationparameter calculator is to save a copy of the audio file in the medialibrary and to save the at least one volume normalization parameter withthe copy of the audio file.
 9. An apparatus as recited in claim 6,wherein the volume normalization parameter calculator is to save a copyof the audio file in the media library and to store the at least onevolume normalization parameter in the copy of the audio file.
 10. Anapparatus as recited in claim 1, wherein the volume normalizationparameter calculator is further to: identify a plurality of audio fileson the apparatus; analyze the content of each identified audio file;calculate the at least one volume normalization parameter associatedwith each identified audio file, wherein the volume normalizationparameters associated with a particular audio file are calculated basedon volume levels in the particular audio file; and store the at leastone volume normalization parameter associated with each identified audiofile in the media library.
 11. An apparatus as recited in claim 10,wherein to store the at least one volume normalization parameter is tostore the at least one volume normalization parameter associated witheach associated audio file.
 12. An apparatus as recited in claim 10,wherein to store the at least one volume normalization parameterassociated with each associated audio file is to store the at least onevolume normalization parameter in a header of the associated audio file.13. An apparatus as recited in claim 10, wherein the volumenormalization parameter calculator is part of a media playerapplication.
 14. One or more computer storage devices having storedthereon a computer program that, when executed by one or moreprocessors, causes the one or more processors to: receive a request toplay an audio file; identify a first volume normalization parameterassociated with the audio file, wherein the first volume normalizationparameter includes a peak volume level associated with the audio file;identify a second volume normalization parameter associated with theaudio file, wherein the second volume normalization parameter includesan average volume level associated with the audio file; and play theaudio file while applying the first volume normalization parameter andthe second volume normalization parameter.
 15. One or more computerstorage devices as recited in claim 14, wherein the first volumenormalization parameter and the second volume normalization parameterare stored in the audio file.
 16. One or more computer storage devicesas recited in claim 14, wherein the first volume normalization parameterand the second volume normalization parameter are stored in a medialibrary.
 17. One or more computer storage devices as recited in claim14, the computer program further causing the one or more processors to:receive a request to copy an additional audio file; identify a thirdvolume normalization parameter associated with the additional audiofile, wherein the third volume normalization parameter includes a peakvolume level associated with the additional audio file; identify afourth volume normalization parameter associated with the additionalaudio file, wherein the fourth volume normalization parameter includesan average volume level associated with the additional audio file; storethe third volume normalization parameter and the fourth volumenormalization parameter in a media library; and save a copy of theadditional audio file to a storage device.
 18. One or more computerstorage devices as recited in claim 17, wherein to save a copy of theadditional audio file to a storage device is to store the third volumenormalization parameter and the fourth volume normalization parameter inthe copy of the audio file.
 19. One or more computer storage devices asrecited in claim 14, the computer program further causing the one ormore processors to: identify a plurality of additional audio files on acomputer system; for each of the plurality of additional audio files:identify volume normalization parameters associated with the additionalaudio file, wherein the volume normalization parameters associated withthe additional audio file include a peak volume level associated withthe additional audio file and an average volume level associated withthe additional audio file; and store the volume normalization parametersassociated with the additional audio file in a media library.
 20. One ormore computer storage devices as recited in claim 14, the computerprogram comprising a media player application.